<?php if (!defined('BASEPATH')) exit ('No direct script access allowed');

/**
 * Representa emprestimo de um item (livro, magazine, mídia...).
 * 
 * @author Douglas Rafael
 * @package models
 */
class TOEmprestimoItem {
    const EMPRESTIMO_ATIVO = 1;
    const EMPRESTIMO_INATIVO = 0;

    public $total;
    public $status;
    public $total_devolvido;

    /**
     * @var TOItem Item empréstado
     */
    public $item;
    

    /**
     * Retorna o nome do status do emprestimo
     * - Há dois tipos de exibição do status de acordo com um valor passado por parametro. Ver desc. do paramentro
     * 
     * @param int $option Opção 1 para exibir o status. 1 para: ATIVO | INATIVO, outro número para DISPONÍVEL | INDISPONÍVEL
     * @return string Nome por extenso do status
     */
    public function get_nome_status($option = 1) {
        if ($option == 1) {
            $string_status = $this->status == self::EMPRESTIMO_ATIVO ? 'Ativo' : 'Inativo';
        } else {
            $string_status = $this->status == self::EMPRESTIMO_ATIVO ? 'Disponível' : 'Indisponível';
        }
        return $string_status;
    }
    
   
    /**
     * Retorna o status do empréstimo
     * - Útil para os empréstimos que tem vários sub-emprestimos de itens
     * - Se dentre os sub-empretimos houver um ativo, o empréstimo é considerado ATIVO
     * - Caso todos os sub-empréstimos estiverem inativos o empréstimo passa a estar INATIVO
     *      STATUS TRUE = Ativo
     *      STATUS FALSE = Inativo
     * 
     * @param array $status     Array contendo os status dos sub-emprestimos do emprestimo
     * @param int   $option     Determina o tipo da string Ativo/Inativo e Disponível/Indisponível
     * @param bool  $bool       Se TRUE retornará o valor booleano e não String
     *                          - O valor default é FALSE
     * @return string/bool
     */
    public function get_status_loan($status = array(), $option = 1, $bool = FALSE){
        if(in_array(1, $status)){
            $this->status = self::EMPRESTIMO_ATIVO; $status_bool = TRUE;
        }else{
            $this->status = self::EMPRESTIMO_INATIVO; $status_bool = FALSE;
        }
        return !$bool ? $this->get_nome_status($option) : $status_bool;
    }

}